package lanqiaobei2016;

import java.util.Scanner;

public class _05交换瓶子 {
    /**
     * 有N个瓶子，编号 1 ~ N，放在架子上。
     * 比如有5个瓶子：
     * 2 1 3 5 4
     * 要求每次拿起2个瓶子，交换它们的位置。
     * 经过若干次后，使得瓶子的序号为：
     * 1 2 3 4 5
     * 对于这么简单的情况，显然，至少需要交换2次就可以复位。
     * 如果瓶子更多呢？你可以通过编程来解决。
     * 输入格式为两行：
     * 第一行: 一个正整数N（N<10000）, 表示瓶子的数目
     * 第二行：N个正整数，用空格分开，表示瓶子目前的排列情况。
     * 输出数据为一行一个正整数，表示至少交换多少次，才能完成排序。
     * 例如，输入：
     * 5
     * 3 1 2 5 4
     * 程序应该输出：
     * 3
     * 再例如，输入：
     * 5
     * 5 4 3 2 1
     * 程序应该输出：
     * 2
     */
    static int[] a = new int[10001];
    static int n;
    static int ans ;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        for (int i = 1; i <=n ;i++){
            a[i] = sc.nextInt();
        }
        for (int i = 1;i <= n; i++){
            if (a[i] == i){
                continue;
            }else {
                swap(pos(i),i);
                ans ++;
            }
        }
        System.out.println(ans);
    }
    static int pos(int x ){
        for (int i = 1; i <= n; i++){
            if (a[i] == x){
                return i;
            }
        }
        return -1;
    }
    static void swap(int x,int y){
        int temp = a[x];
        a[x] = a[y];
        a[y] = temp;
    }
}
